Software development environments exist that aid software developers in writing program code. A software development environment may include a source code editor for entering source code, one or more build automation tools, and a code debugger. Examples of commercially-available software development environments include Microsoft® WebMatrix® and Microsoft® Visual Studio®, provided by Microsoft Corporation of Redmond, Wash., JDeveloper® and NetBeans®, provided by Oracle Corporation of Redwood City, Calif., Adobe® Dreamweaver®, provided by Adobe Systems Inc. of San Jose, Calif., Eclipse IDE provided by Eclipse Foundation of Ontario, Canada, ActiveState® Komodo® provided by ActiveState Software Inc. of Vancouver, British Columbia, and IntelliJ® IDEA, provided by JetBrains, s.r.o., of Prague, Czech Republic.
Some conventional software development environments provide assistance to developers writing code by presenting what are known as code completion features. Code completion features are features that help developers learn more about the code they are using, keep track of parameters they are typing, and add calls to properties and methods with only a few keystrokes. For example, providing a code completion feature may involve automatically displaying a list of valid members from a type (or namespace) after a developer types a trigger character (for example, a period (.) in managed code or :: in C++) within a source code file. By interacting with an item within the list, a developer may cause the item to be automatically inserted into the source code file or may receive additional information about the item (e.g., a complete declaration for the item). Providing a code completion feature may also involve automatically providing a developer with information about the number, names, and types of parameters required by a method, or automatically completing the rest of a variable, command, or function name once a developer has entered enough characters to disambiguate the term. In Microsoft® WebMatrix® and Microsoft® Visual Studio®, the code completion features are referred to as IntelliSense®.
In providing code completion features, the degree of accuracy that can be achieved may depend on the type of programming language being used. For strongly typed languages such as Visual Basic and C#, providing accurate code completion information is relatively straightforward. For example, simple token-based analysis and/or static code analysis of the source code file may be used to provide highly-accurate code completion information for strongly typed programming languages. In contrast, it can be difficult to provide accurate code completion information for dynamic languages such as JavaScript, PHP, and Python, since these languages do not provide a consistent object model. For such dynamic programming languages, it can be difficult to correctly infer the shape and structure of variables, methods and the like, since these entities may be modified at runtime.
Programming platforms exist that enable developers to incorporate code modules that are stored in one or more support libraries into their source code files. For example, developers working in node.js—a popular server-side programming platform designed for writing scalable Internet applications—can incorporate the functionality of JavaScript code modules known as “node packaged modules” (also referred to herein as “node.js modules”) by simply referencing such modules in their source code files. Using these modules can be painful for a developer because many source code editors do not provide functionality that shows the developer how to use the module application programming interface (API). Consequently, to determine how the module works, the developer must either try to find public documentation about the module or, if no such documentation exists, read the source code of the module itself.